home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
program
/
p063b9s.zip
/
UNIT
/
USAGE.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1996-04-20
|
3KB
|
92 lines
UNIT Usage;
{ ╔═════════════════════════════════════════════════════════════════════════╗ }
{ ║ Connection usage statistics updater Last changed: 20.04.96 SA ║ }
{ ║ ║ }
{ ║ (C) Copyright 1989-92 by D. Wulff & S. Ager ║ }
{ ║ ║ }
{ ║ This source may not be given to anybody, without the written permission ║ }
{ ║ from The Portal Team. ║ }
{ ╚═════════════════════════════════════════════════════════════════════════╝ }
INTERFACE
USES Use32, Dos, OpDate, PoPTypes;
PROCEDURE UpdateConnectStat(MailUser, InOut: Byte; Speed: Word; ConnStr: S80);
PROCEDURE UpdateUsageStat(CONST StartTime,EndTime: DateTimeRec; StatType: Byte);
IMPLEMENTATION
USES OpString, FileUtil, Globals;
PROCEDURE UpdateConnectStat(MailUser, InOut: Byte; Speed: Word; ConnStr: S80);
VAR
i : Integer;
Proto : S5;
f1: FILE OF TPortalStat;
BEGIN
IF StatRec^.Start.D=0 THEN
BEGIN
StatRec^.Start.D:=Today;
StatRec^.Start.T:=CurrentTime;
END;
i:=0;
REPEAT
Inc(i);
UNTIL (i>5) OR ((Cfg.Statistics.MdmProtocol[i]<>'') AND (Pos(Cfg.Statistics.MdmProtocol[i], StUpcase(ConnStr))>0));
IF i<=5 THEN Proto:=Cfg.Statistics.MdmProtocol[i] ELSE Proto:='';
WITH StatRec^.Connect DO
BEGIN
i:=-1;
REPEAT
Inc(i);
UNTIL ((Bauds[i]=Speed) AND (Protocol[i]=Proto)) OR (Bauds[i]=0);
Inc(Stat[MailUser,InOut,i]);
IF Bauds[i]=0 THEN
BEGIN
Bauds[i]:=Speed;
Protocol[i]:=Proto;
END;
END;
Assign(f1, AddBackSlash(StartPath)+MakeTaskFileName(PoPStatisticsFileName));
Rewrite(f1);
Write(f1, StatRec^);
Close(f1);
END;
PROCEDURE UpdateUsageStat(CONST StartTime,EndTime: DateTimeRec; StatType: Byte);
VAR
i, StartHour, StartMin, StartSec, EndHour, EndMin, EndSec : Byte;
DoW : DayType;
BEGIN
IF StatRec^.Start.D=0 THEN StatRec^.Start:=StartTime;
DoW:=DayOfWeek(StartTime.D);
TimeToHMS(EndTime.T,EndHour,EndMin,EndSec);
TimeToHMS(StartTime.T,StartHour,StartMin,StartSec);
i:=StartHour;
WITH StatRec^ DO
BEGIN
REPEAT
IF i=StartHour THEN
BEGIN
IF EndHour<>StartHour THEN
Inc(Usage[StatType,DoW,i],60-StartMin)
ELSE
Inc(Usage[StatType,DoW,i],EndMin-StartMin);
END ELSE
BEGIN
IF i<>EndHour THEN
Inc(Usage[StatType,Dow,i],60)
ELSE
Inc(Usage[StatType,DoW,i],EndMin);
END;
Inc(i); IF i>23 THEN
BEGIN
i:=0;
DoW:=Succ(DoW);
END;
UNTIL (i>EndHour) Or ((EndHour=23) and (i=0));
END;
END;
END.